import axios from "axios"
// import qs from "querystring"
import Qs from "qs"
import { ElMessage } from "element-plus"

const errorHandle = (status, info) => {
  switch(status){
    case 400:
      console.log("error 400 语意有误");
      break;
    case 401:
      console.log("error 401 服务器认证失败");
      break;
    case 403:
      console.log("error 403 服务器拒绝访问");
      break;
    case 404:
      console.log("error 404 地址错误");
      break;
    case 500:
      console.log("error 500 服务器遇到意外");
      break;
    case 502:
      console.log("error 502 服务器无响应");
      break;
    default:
      console.log(info);
      break;
  }
}

const instance = axios.create({
  // 网络请求公共配置
  timeout: 5000
})

// 添加请求拦截器
instance.interceptors.request.use(
  // 在发送请求之前做些什么
  function (config) {
    console.log("config:", config);
    // if (config.method === "post"){
    //   // config.data = qs.stringify(config.data)
    //   config.data = Qs.stringify(config.data)
    // }
    if (localStorage.getItem('auth')) {
      // if (currentUrl != 'login') {
      // const auth = JSON.parse(localStorage.getItem('auth'))
  
      // let flg = true
      // for (let item of auth.permissionlist) {
      //   console.log('item', item);
      //   if (item['permissions__url'] == currentUrl & item['permissions__action'] == method.toUpperCase()) {
      //     flg = false
      //   }
      // }
  
      // if (flg) {
      //   console.log('flg');
      //   ElMessage({
      //     type: 'error',
      //     message: '没有权限',
      //     center: true,
      //   })
      //   return Promise.reject(request);
      // }
      // console.log("token",JSON.parse(localStorage.getItem('auth')).token);
      config.headers["token"] = JSON.parse(localStorage.getItem('auth')).token;
      config.headers["username"] = JSON.parse(localStorage.getItem('auth')).username;
      // config.headers["token"] = auth.token;
      // config.headers["username"] = auth.username;
  
    }
    return config
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
instance.interceptors.response.use(
  // 对响应数据做点什么
  function (response) {
    // return response.status === 200 ? Promise.resolve(response) : Promise.reject(response);
    // return Promise.resolve(response)
    return response
  }, function (error) {
    // 对响应错误做点什么
    if (error.response.data.msg === "token已失效"){
      ElMessage({
        message: error.response.data.msg,
        type: "error",
        // center: true
      });
      // token 已失效时清除 cookie
      localStorage.removeItem("auth")
      // 然后刷新页面，刷新时路由守卫检查到没有 token 就会跳转到登录页面
      location.reload()
    }
    
    return Promise.reject(error);
    // const {response} = error;
    // return errorHandle(error.status, error.status)
  });



  export default instance;